this

Доступность

Flash Player 5.

Синтаксис

this

Описание

Идентификатор (ключевое слово); указывает на объект или мувиклип. Во время выполнения скрипта this указывает на мувиклип, содержащий скрипт с этим идентификатором. При вызове метода, this указывает на объект, содержащий вызванный метод.

Внутри обработчика события on(), присоединенного к кнопке, this указывает на Таймлайн, в котором эта кнопка находится. Внутри обработчика событий onClipEvent(), присоединенного к мувиклипу, this указывает на Таймлайн самого мувиклипа.

Так как значение this зависит от контекста скрипта, в котором этот идентификатор содержится, вы не можете использовать this в скрипте для обращения к переменной, определенной внутри класса. Создайте файл ApplyThis.as со следующим содержимым:

class ApplyThis {
  var str:String = "Определена в ApplyThis.as";
  function conctStr(x:String):String {
    return x+x;
  }
  function addStr():String {
    return str;
  }
}

Затем, во FLA или AS файле, наберите следующий код:

var obj:ApplyThis = new ApplyThis();
var abj:ApplyThis = new ApplyThis();
abj.str = "Определена во FLA или AS";
trace(obj.addStr.call(abj, null));  //выводит: defined in FLA or AS
trace(obj.addStr.call(this, null));  //выводит: undefined
trace(obj.addStr.call(obj, null));  //выводит: Defined in applyThis.as

Подобным образом ,для вызова функции, определенной в динамическом классе, вы должны использовать ключевое словоthis для вызова функции в нужной области видимости:

// неверно:
/*
dynamic class Simple {
  function callfunc() {
    trace(func());
  }
}
*/
// верно:
dynamic class simple {
  function callfunc() {
    trace(this.func());
  }
}

Внутри FLA или AS файла введите следующий код:

var obj:Simple = new Simple();
obj.num = 0;
obj.func = function() {
  return true;
};
obj.callfunc();
// выводит: true

При использовании некорректного варианта компилятор выдаст синтаксическую ошибку.

Пример

В следующем примере ключевое слово this указывает на объект Circle:

function Circle(radius:Number):Void {
  this.radius = radius;
  this.area = Math.PI*Math.pow(radius, 2);
}
var myCircle = new Circle(4);
trace(myCircle.area);

В следующем выражении, находящемся в кадре мувиклипа , this указывает на Таймлайн этого мувиклипа.

// устанавливает прозрачность данного мувиклипа равной 20
this._alpha = 20;

В следующем выражении внутри обработчика MovieClip.onPress, this указывает на мувиклип:

this.square_mc.onPress = function() {
  startDrag(this);
};
this.square_mc.onRelease = function() {
  stopDrag();
};

См. также

on(), onClipEvent()